/*******************************************************************************
 * Name    : KiObject.hpp
 * Date    : 01-14-2015
 * Author  : Sylvain Nieuwlandt -- nicholas.rush.developper@gmail.com
 ******************************************************************************/
#ifndef KIOBJECT_HPP
#define KIOBJECT_HPP

class KiBoolean;

/** 
 * Root class of all the others class of the lib.
 *
 * Define basic operations for the rest of the classes.
 * 
 * For checking equality between two KiObject instances, we used the method 
 * named KiObject::equals(KiObject*) and not an overload of operator== cause
 * we want to use a KiBoolean as result and not the primitive bool type.
 */
class KiObject {
public:
  /**
   * Constructor of the class.
   *
   * Create a new KiObject.
   */
  KiObject();
  
  /**
   * Destructor of the class.
   *
   * Destroy the calling object.
   */
  virtual ~KiObject();

  /**
   * Check equality between the caller and an other object.
   *
   * Two KiObjects are equals if their adresses are equals.
   */
  virtual KiBoolean equals(KiObject* obj2);

};

#endif
